#include "xtypes.h"
#include "xaux.h"


qword_t xGetCycleCount()
{
	// 	__asm _emit 0x0F;
	// 	__asm _emit 0x31;

	__asm rdtsc;
}


dword_t xBGRA2RGBA(dword_t _Color)
{
// 	char_t *p;
// 	p=(char*)&_Color;
// 	xSwapVar(p[0], p[2]);

	__asm
	{
		lea ecx, _Color;
		mov eax, [ecx];
		mov dl, al;
		ror eax, 16;
		mov dh, al;
		mov al, dl;
		ror eax, 16;
		mov al, dh;
	}
}


qword_t xEndianSwitchU64( qword_t _QW )
{
	char_t *p;
	p=(char*)&_QW;
	xSwapVar(p[0], p[7]);
	xSwapVar(p[1], p[6]);
	xSwapVar(p[2], p[5]);
	xSwapVar(p[3], p[4]);

	return _QW;
}

dword_t xEndianSwitchU32( dword_t _DW )
{
// 	char_t *p;
// 	p=(char*)&_DW;
// 	xSwapVar(p[0], p[3]);
// 	xSwapVar(p[1], p[2]);

	__asm
	{
		lea ecx,_DW;
		mov eax,[ecx];
		bswap eax;
	}
}

word_t xEndianSwitchU16( word_t _W )
{
// 	char_t *p;
// 	p=(char*)&_W;
// 	xSwapVar(p[0], p[1]);

	__asm
	{
		xor eax,eax;
		lea ecx,_W;
		mov ax,[ecx];
		mov dl,al;
		mov al,ah;
		mov ah,dl;
	}
}
